文章目录
-
- Prometheus数据收集方式
- 教程介绍
- 一、虚拟机h1部署prometheus,保证各服务器与本服务器相通
- 二、每台(h1,h2,h3)部署node_exporter,
- 三、虚拟机h2上部署redis_exporter,集群只需一台安装即可
- 四、虚拟机h3部署nginx_vts_exporter
- 五、虚拟机h1上部署postgres_exporter / mysqld_exporter
- 六、每台部署kafka_exporter
- 七、jar 包监控
- 八、blackbox_exporter部署icmp、tcp
- 九、canal监控
- 十、mtail监控日志关键字
- 十一:cadvisor监控容器
- 十二、elastic监控
- 十三、虚机h1上安装grafana
- 完整alert-feishu.yml
Prometheus数据收集方式
1、Pull 模式:Prometheus 主动向目标服务发起 HTTP 请求,拉取数据并存储。
2、Push 模式:目标服务主动向 Prometheus 推送数据。
3、Exporter 模式:使用 Exporter 进程采集目标服务的指标数据,Prometheus 通过访问 Exporter 的 HTTP 接口来拉取数据。
4、Service Discovery 模式:Prometheus 可以与多种服务发现机制集成,如 Kubernetes、Consul、Zookeeper 等。Prometheus 会从服务发现中心获取目标服务的信息,并使用 Pull 或 Exporter 模式采集数据。
教程介绍
主要以prometheus提供采集平台(http-server)去主动拉取(pull)各服务探针数据到http://IP/metrics(指标)内,后在grafana(图形化界面)以Prometheus为(datasources)数据源进行所有相关服务数据的展示。
实验环境同网段虚拟机为例:(相关软件包可百度网盘或官网下载)
下面安装步骤所需最全软件包,目前最新版本(百度网盘)
zabbix:https://www.cnblogs.com/clsn/p/7885990.html#auto-id-71
链接:https://pan.baidu.com/s/1ATEy9VkemNHYMyVSxOL0Ew
提取码:ujbz
github官网下载地址:
grafana展示模板下载地址:
#grafana下载
#prometheus下载
#node_exporter下载 模板:8919
node数据大屏下载地址模板:11074
#mysql_exporter 下载 7362
#redis_export 下载 模板:763/8919
https://grafana.com/api/dashboards/763/revisions/1/download
https://github.com/pingcap/tidb-ansible/tree/master/scripts #json模板下载
#nginx_export下载 模板:2949/462
#kafka_export下载 模板:7589端口9308 端口9991
https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.6/jmx_prometheus_javaagent-0.6.jar
#Postgresql: 下载地址 端口:9187 模块:9628
blackbox_exporter模板:9965
docker监控模板下载链接
yaml文件数值格式化
canal告警解释及
一、虚拟机h1部署prometheus,保证各服务器与本服务器相通
1、默认端口:9090 安装目录(自选):/usr/local/prometheus
2、prometheus.service 可修改端口。
3、上传tar包并解压(prometheus-2.32.0-rc.1.linux-amd64.tar.gz)
tar -zxvf prometheus-2.32.0-rc.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.32.0-rc.1.linux-amd64.tar.gz /usr/local/prometheus
4、Prometheus.yml文件内容格式参考(修改yml文件后,必须重启prometheus)
5、启动prometheus,将prometheus.services上传到/usr/lib/systemd/system目录下实现开机自启
cat prometheus.services
[Unit]
Description=Prometheus Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/u01/prometheus/
ExecStart=/u01/prometheus/prometheus --storage.tsdb.path=/u01/prometheus/data/ --storage.tsdb.retention.size=120GB --storage.tsdb.retention.time=1825d --config.file=/u01/prometheus/prometheus.yml --log.format=json --log.level=info --web.enable-lifecycle ###120 GB作为存储空间,并将5年作为保留数据的时间范围
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=no
[Install]
WantedBy=default.target
cp ./prometheus.services /usr/lib/systemd/system
systemctl daemon-reload # 在system目录下修改文件都需重新加载守护进程
systemctl start prometheus #目前没写杀进程,需手工kill
systemctl enable prometheus
手动启动方式:./prometheus --config.file=prometheus.yml --web.listen-address=:9090
或 ./prometheus
6、启动成功后,可直接访问ip:9090验证。查看是否生成目标。(以下都可此方式验证)##注意防火墙可能限制端口
二、每台(h1,h2,h3)部署node_exporter,
1、默认端口:9100 模块:8919 安装目录(自选):/usr/local/
2、上传tar包并解压,将node_exporter.service传输到/usr/lib/systemd/system目录下。
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-1.3.1.linux-amd64.tar.gz /usr/local/node_exporter
3、启动方式
cp ./node_exporter.services /usr/lib/systemd/system
systemctl daemon-reload
system start node_exporter.service
system enable node_exporter.service
########################
./node_exporter
./node_exporter --web.listen-address=:9100 #可用于修改端口
4、修改h1虚机prometheus目录下prometheus.yml文件,如下。重启prometheus,访问验证。
5、可查看图形验证。
三、虚拟机h2上部署redis_exporter,集群只需一台安装即可
1.默认端口:9121 模块:763/8919安装目录(自选):/usr/local
2、上传tar包并解压
tar -zxvf redis_exporter-v1.32.0.linux-amd64.tar.gz -C /usr/local/
mv redis_exporter-v1.32.0.linux-amd64 redis_exporter
3、启动方式(需要修改redis_exporter.service文件中ip及password)
Systemctl start redis_exporter
Systemctl enable redis_exporter
手动启动:./redis_exporter -redis.addr 192.168.174.22:6379 -redis.password 123456
4、修改prometheus.yml 文件,重启prometheus.访问验证
四、虚拟机h3部署nginx_vts_exporter
1、部署nginx-vts-exporter,nginx需要两个模块,需重新编译,不安装!!!!默认端口:9913 模块:2949/462
2、解压编译安装。
编译过程中,可能缺少pcre,直接yum 安装pcre、pcre-devel
(1)./configure --add-module=/root/nginx-module-vts-master --with-http_stub_status_module
(2)make
(3)备份/usr/local/nginx/sbin/nginx cp本地目录下objc/nginx到/usr/local/nginx/sbin
(4)查看是否编译成功: nginx -V
(5)修改nginx.conf添加两行
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_host on;
(5)所有conf.d下配置文件加入(实验环境存在两个web,所以需在各web.conf里添加以下配置)
location /status {
stub_status on;
access_log on;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
(6)重新加载nginx -s reload
(7)启动方式:(service文件需修改ip:port)
(8)修改完成后,上传解压nginx-vts-exporter。上传service文件。
Systemctl start nginx-vts-exporter
Systemctl enable nginx-vts-exporter
手动起服务:
nohup ./nginx-vts-exporter -nginx.scrape_uri=http://192.168.174.33:8888/status/format/json &启动nginx :9913
nohup ./nginx-vts-exporter -nginx.scrape_uri=http://192.168.174.33:9090/status/format/json -telemetry.address :9914 & 启动:9914端口
(9)修改prometheus.yml文件,重启prometheus服务。
五、虚拟机h1上部署postgres_exporter / mysqld_exporter
postgres_exporter
1、默认端口:9187 模块:9628
2、上传tar包并解压,custom.yaml文件可自行编写
3、启动方式
(1)可添加vim /etc/profile(永久),或直接运行(为临时)
export DATA_SOURCE_NAME="postgresql://user:password@192.168.174.11:5432/postgres?sslmode=disable"
(2)
export PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgres_exporter/custom.yaml"
(3)上传tar包并解压,后可直接执行
nohup ./postgres_exporter &
3、修改prometheus.yml重启prometheus,
mysqld_exporter
vim .my.cnf
[client]
user=user
password=passswd
host=host_ip
port=3306
Prometheus。yml
- job_name: 'mysqld_exporter_targets'
static_configs:
- targets:
- ip:9104
- ip:9104
六、每台部署kafka_exporter
1、部署的jmx默认端口:9991 模块:7589
2、上传解压。
编辑添加以下两行
vim /u01/apps/kafka/kafka/bin/kafka-server-start.sh (需修改文件实际路径)
(1)export JMX_PORT="9999"
(2)
export KAFKA_OPTS="-javaagent:/u01/apps/pro/jmx_prometheus_javaagent-0.6.jar=9991:/u01/apps/pro/kafka-0-8-2.yml"
prometheus.yml文件修改:
- job_name: "kafka"
static_configs:
- targets: ["192.168.174.22:9991"]
JMX 是 Java 的一个监控管理框架,Kafka 实现了;9999 是 Kafka 的,通过 JMX_PORT 来配置,配置了这个环境变量之后 Kafka 就会开启 JMX 功能,通过这个端口将监测指标暴露出来
修改完成后,重启kafka即可
七、jar 包监控
大致格式就是:
java -javaagent: jmx-xxx.jar的目录 =jmx-xxx.jar启动端口号:/jmx_exporter.yml文件路径 -jar xxx.jar(你想监控的项目)
#进程启动命令:
java -javaagent:jmx_prometheus_javaagent-0.12.0.jar=6666:./jmx_prometheus.yaml -jar yourJar.jar
FROM ubuntu:16.04 as jar
WORKDIR /
RUN apt-get update -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget
RUN wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.13.0/jmx_prometheus_javaagent-0.13.0.jar
FROM tomcat:jdk8-openjdk-slim
ENV "JAVA_OPTS ": "-javaagent:/jmx_prometheus_javaagent-0.13.0.jar=6666:/prometheus-jmx-config.yaml"
ADD prometheus-jmx-config.yaml /prometheus-jmx-config.yaml
COPY --from=jar /jmx_prometheus_javaagent-0.13.0.jar /jmx_prometheus_javaagent-0.13.0.jar
docker build . -t ccr.ccs.tencentyun.com/imroc/tomcat:jdk8
# 所在目录
cd /u01/prometheus/jmx_exporter
# 新建配置文件jmx_prometheus.yaml
vim jmx_prometheus.yaml (可以只有前两行)
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
rules:
- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
name: os_$1
type: GAUGE
attrNameSnakeCase: true
- pattern: ".*"
Prometheus yaml文件
scrape_configs:
- job_name: 'java'
scrape_interval: 30s
static_configs:
- targets:
- '192.168.174.11:6666' // 代表先前启动的agent的地址和端口
八、blackbox_exporter部署icmp、tcp
grafana-cli plugins install grafana-piechart-panel