# **USE FILE-BASED SERVICE DISCOVERY TO DISCOVER SCRAPE TARGETS**
Prometheus提供了多种[服务发现选项](https://github.com/prometheus/prometheus/tree/master/discovery)来发现抓取目标,包括[Kubernetes](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Ckubernetes_sd_config),[Consul](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Cconsul_sd_config)等。如果您需要使用当前不支持的服务发现系统,Prometheus[基于文件的服务发现](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Cfile_sd_config)机制可能会最好地满足您的用例,该机制使你能够在JSON文件中列出抓取目标(以及这些目标相关的元数据)。
该指南中,我们将会
* 在本地安装、运行一个Prometheus [Node Exporter](https://prometheus.io/docs/guides/node-exporter)
* 创建一个`targets.json`文件,用以为Node Exporter指定主机和端口信息。
* 安装并运行Prometheus实例,该实例配置使用targets.json文件来发现Node exporter。
## **安装运行Node Exporter**
查看`使用Node Exporter来监控Linux宿主机metrics`指南的[这部分](https://prometheus.io/docs/guides/node-exporter#installing-and-running-the-node-exporter)。该Node Exporter运行在9100端口。通过请求确认该Node Exporter确实在暴露metrics:
~~~
curl http://localhost:9100/metrics
~~~
metrics看上去像这样:
~~~
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
...
~~~
## **安装、配置、运行Prometheus**
下载、解压、安装Prometheus。
解压的目录里包含配置文件`prometheus.yml`。替换配置文件中相同的部分如下:
~~~
scrape_configs:
- job_name: 'node'
file_sd_configs:
- files:
- 'targets.json'
~~~
该配置文件指定了一个名称为`node`的job,该job从targets.json文件中检索Node Exporter实例的主机和端口信息。
现在创建一个targets.json文件,同时添加内容如下:
~~~
[
{
"labels": {
"job": "node"
},
"targets": [
"localhost:9100"
]
}
]
~~~
该配置指定了一个名称为`node`的job,其target为:`localhost:9100`。
现在你可以开启Prometheus:
~~~
./prometheus
~~~
如果Prometheus启动成功,你能够看到一行日志如下:
~~~
level=info ts=2018-08-13T20:39:24.905651509Z caller=main.go:500 msg="Server is ready to receive web requests."
~~~
## **探索服务发现的metrics**
- 介绍(Introduction)
- 概览(Overview)
- First steps
- 方案比较
- FAQ
- Roadmap
- Media
- 术语表(Glossary)
- 概念(Concepts)
- 数据模型(Data model)
- 指标类型(Metric types)
- 作业和实例(Jobs and instances)
- Prometheus
- Getting started
- 安装
- 配置
- 配置
- 记录规则(Recording Rules)
- 报警规则(Alerting Rules)
- 模版示例
- 模版参考
- Rules的单元测试
- Querying
- Basics
- Operators
- Functions
- Examples
- HTTP API
- 存储(Storage)
- 联邦(Federation)
- 管理API(Management API)
- 迁移(Migration)
- API稳定性
- 可视化(Virsualization)
- Instrumenting
- 客户端库
- 开发客户端库
- 推送metrics
- exporters & 集成
- 开发exporters
- 格式一览(Exposition formats)
- Operating
- 安全
- 集成
- 报警(Alerting)
- 报警概览
- Alertmanager
- 配置
- 客户端
- 通知模版参考
- 通知模版样例
- 管理API
- Best Practices
- Metric & label 名称
- Instrumentation
- console & dashboard
- Histogram & summary
- 报警
- 记录规则(Recording rules)
- 何时使用Pushgateway
- Remote write tuning
- Guides
- 使用cAdvisor监控Docker容器
- 使用基于文件的服务发现来发现抓取target
- Basic auth
- 使用node exporter来监控Linux宿主机metrics
- Instrumenting一个Go应用程序
- TLS加密