Centos8搭建服务监控prometheus+node_export+grafana

Centos8搭建服务监控prometheus+node_export+grafana

  • 简单介绍
    • prometheus
      • 什么是prometheus?
      • prometheus的特点
      • 基本原理
      • 服务过程
      • 三大套件
    • Grafana
      • 什么是Grafana
      • Grafana的特点
    • node_export
      • node_export是什么
  • 搭建过程
    • prometheus的安装使用
      • 用户和组
      • 创建目录
      • 下载
      • 解压
      • 为prometheus创建配置文件目录和存放数据目录并赋权限
      • 将prometheus配置文件拷贝到/etc/prometheus目录下
      • 将prometheus下二进制文件拷贝到/usr/local/bin目录下
      • 修改配置文件
      • 启动prometheus
      • 防火墙配置
      • 将prometheus加入systemctl管理
        • 创建prometheus.service服务文件
        • 重新加载服务列表
        • 启动服务
      • 将prometheus设置为开机自启动
    • node_exporter的安装和使用
      • 用户和组
      • 创建目录
      • 下载
      • 解压
      • 将node_exporter下二进制文件拷贝到/usr/local/bin目录下并设置权限
      • 启动
      • 将node_exporter加入systemctl管理
        • 创建node_exporter.service服务文件
        • 重新加载服务列表
        • 启动服务
      • 将node_exporter设置为开机自启动
      • 加入prometheus监控
    • Grafana的安装使用
      • 用户和组
      • 创建目录
      • 下载
      • 解压
      • 将grafana下二进制文件拷贝到/usr/local/bin目录下并设置权限
      • 配置grafana
        • 拷贝ini配置文件文件至/etc/grafana配置文件目录下
        • 创建grafana配置文件所需目录
        • /etc/grafana配置文件目录下创建custom.ini的配置文件并覆盖conf/defaults.ini中定义的任何设置
      • 启动
      • 配置数据源
        • 导入dashboard
      • 将grafana加入systemctl管理
        • 创建grafana-server.service服务文件
        • 重新加载服务列表
        • 启动服务
      • 将grafana设置为开机自启动

简单介绍

prometheus

什么是prometheus?

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。 Prometheus目前在开源社区相当活跃。 Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。简单来说prometheus就是用来数据收集和存储的,使用的pull模式。

prometheus的特点

  • 多维度数据模型
  • 灵活的查询语言
  • 不依赖分布式存储,单个服务器节点是自主的
  • 通过基于HTTP的pull方式采集时序数据
  • 可以通过中间网关进行时序列数据推送
  • 通过服务发现或者静态配置来发现目标服务对象
  • 支持多种多样的图表和界面展示,比如Grafana等

基本原理

通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

服务过程

  • Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据
  • Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中
  • Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出
  • PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据
  • Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式

三大套件

  • Server 主要负责数据采集和存储,提供PromQL查询语言的支持
  • Alertmanager 警告管理器,用来进行报警
  • Push Gateway 支持临时性Job主动推送指标的中间网关

Grafana

什么是Grafana

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。说白了,grafana就是prometheus的数据展示工具。

Grafana的特点

  • 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式
  • 数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等
  • 通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知
  • 混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源
  • 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记
  • 过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询

node_export

node_export是什么

node-export 主要主要是监控kubernetes 集群node 物理主机:cpu、memory、network、disk 等基础监控资源。 node_export是一个监控服务会暴露一个接口,prometheus通过这个接口获取数据。

搭建过程

prometheus的安装使用

用户和组

#先检查用户prometheus和组prometheus是否存在

#检查组是否存在
cat /etc/group | grep prometheus

#如果不存在,创建组
groupadd prometheus

#检查用户prometheus是否存在
cat /etc/passwd | grep prometheus    
或者  
id prometheus

#如果不存在,创建用户
useradd -g prometheus prometheus

创建目录

# 创建目录并切换
[root@dxm22 ~]# mkdir -p /data/prometheus
[root@dxm22 ~]# cd /data/prometheus/

下载

[root@dxm22 prometheus]# wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz

# 下载完查看
[root@dxm22 prometheus]# ll -h
总用量 62M
-rw-r--r-- 1 root root 62M 11月 26 20:52 prometheus-2.23.0.linux-amd64.tar.gz

解压

[root@dxm22 prometheus]# tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz
prometheus-2.23.0.linux-amd64/
prometheus-2.23.0.linux-amd64/LICENSE
prometheus-2.23.0.linux-amd64/consoles/
prometheus-2.23.0.linux-amd64/consoles/node-cpu.html
prometheus-2.23.0.linux-amd64/consoles/prometheus-overview.html
prometheus-2.23.0.linux-amd64/consoles/node-overview.html
prometheus-2.23.0.linux-amd64/consoles/node.html
prometheus-2.23.0.linux-amd64/consoles/node-disk.html
prometheus-2.23.0.linux-amd64/consoles/index.html.example
prometheus-2.23.0.linux-amd64/consoles/prometheus.html
prometheus-2.23.0.linux-amd64/prometheus
prometheus-2.23.0.linux-amd64/console_libraries/
prometheus-2.23.0.linux-amd64/console_libraries/prom.lib
prometheus-2.23.0.linux-amd64/console_libraries/menu.lib
prometheus-2.23.0.linux-amd64/prometheus.yml
prometheus-2.23.0.linux-amd64/promtool
prometheus-2.23.0.linux-amd64/NOTICE
[root@dxm22 prometheus]# ll -h
总用量 62M
drwxr-xr-x 4 3434 3434 132 11月 26 20:49 prometheus-2.23.0.linux-amd64
-rw-r--r-- 1 root root 62M 11月 26 20:52 prometheus-2.23.0.linux-amd64.tar.gz

为prometheus创建配置文件目录和存放数据目录并赋权限

# 为prometheus创建存放配置文件的目录
[root@dxm22 data]# mkdir /etc/prometheus

# 为prometheus创建存放数据的目录
[root@dxm22 data]# mkdir /var/lib/prometheus

# 为/var/lib/prometheus目录设置权限
[root@dxm22 data]# chown prometheus.prometheus /var/lib/prometheus
[root@dxm22 data]# ll /var/lib | grep prometheus
drwxr-xr-x   2 prometheus     prometheus        6 12月  8 22:20 prometheus

将prometheus配置文件拷贝到/etc/prometheus目录下

[root@dxm22 prometheus-2.23.0.linux-amd64]# cp prometheus.yml /etc/prometheus/

将prometheus下二进制文件拷贝到/usr/local/bin目录下

[root@dxm22 prometheus-2.23.0.linux-amd64]# cp prometheus /usr/local/bin/
[root@dxm22 prometheus-2.23.0.linux-amd64]# cp promtool /usr/local/bin/
[root@dxm22 prometheus-2.23.0.linux-amd64]# ll /usr/local/bin/ | grep prom
-rwxr-xr-x 1 root root 88153522 12月  8 22:25 prometheus
-rwxr-xr-x 1 root root 78172790 12月  8 22:26 promtool

修改配置文件

[root@dxm22 prometheus]# cat /etc/prometheus/prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

因为默认的配置文件中已经有prometheus自身的配置信息了,所以这里我们无需修改。

启动prometheus

# 可直接启动(非后台启动),进入prometheus安装目录
./prometheus

# 后台启动,在安装目录下:
nohup ./prometheus --config.file=prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 &

# 后台启动,在任意目录下:
nohup /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 &

我们这里使用后台启动。
[root@dxm22 prometheus-2.23.0.linux-amd64]# nohup /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090 >/dev/null 2>&1 &
[1] 20203

# 查看是否存在prometheus进程
[root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus
root       20203  4.5  3.3 769484 61424 pts/0    Sl   22:43   0:00 /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090
root       20213  0.0  0.0  12320  1044 pts/0    S+   22:43   0:00 grep --color=auto prometheus

# 查看9090端口是否被监听
[root@dxm22 prometheus-2.23.0.linux-amd64]# netstat -tunlp | grep :9090
tcp6       0      0 :::9090                 :::*                    LISTEN      20203/prometheus

启动成功后,浏览器访问ip:9090,我们这里是http://192.168.0.22:9090/targets
Centos8搭建服务监控prometheus+node_export+grafana_第1张图片

防火墙配置

因为我这里是本机测试,所以防火墙是关闭状态,正常情况下服务器的防火墙都是开启的,所以需要做这一步配置,把9090端口加入防火墙。

# 把9090端口加入防火墙
[root@dxm22 prometheus-2.23.0.linux-amd64]# firewall-cmd --add-port=9090/tcp --permanent
success

# 重载防火墙的修改
[root@dxm22 prometheus-2.23.0.linux-amd64]# firewall-cmd --reload
success

将prometheus加入systemctl管理

创建prometheus.service服务文件

[Unit]

Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries
LimitNOFILE=65536
PrivateTmp=true
RestartSec=2
StartLimitInterval=0
Restart=always
    
[Install]
WantedBy=multi-user.target

重新加载服务列表

[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl daemon-reload

启动服务

# 停止上面手动后台启动的prometheus服务
[root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus
root       20203  0.0  4.0 769484 75316 pts/0    Sl   22:43   0:00 /usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api --web.listen-address=:9090
root       20881  0.0  0.1  12320  2376 pts/0    S+   23:05   0:00 grep --color=auto prometheus
[root@dxm22 prometheus-2.23.0.linux-amd64]# kill -9 20203

# 检查是否还存在prometheus进程
[root@dxm22 prometheus-2.23.0.linux-amd64]# ps aux | grep prometheus
root       20885  0.0  0.0  12320  1084 pts/0    S+   23:05   0:00 grep --color=auto prometheus

# 查询所有服务单元是否有prometheus
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus
prometheus.service                         disabled

# 存在,且非开启自启动,接着使用systemctl启动prometheus服务
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl start prometheus.service

# 查看prometheus服务状态
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl status prometheus.service
● prometheus.service - Prometheus Time Series Collection and Processing Server
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-12-08 23:07:57 CST; 11s ago
 Main PID: 20927 (prometheus)
    Tasks: 9 (limit: 11154)
   Memory: 24.2M
   CGroup: /system.slice/prometheus.service
           └─20927 /usr/local/prometheus/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/pro>

12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:645 component=tsdb msg="Repl>
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:659 component=tsdb msg="On-d>
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.085Z caller=head.go:665 component=tsdb msg="Repl>
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=head.go:717 component=tsdb msg="WAL >
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=head.go:722 component=tsdb msg="WAL >
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:742 fs_type=XFS_SUPER_MAGIC
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:745 msg="TSDB started"
12月 08 23:07:58 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:07:58.086Z caller=main.go:871 msg="Loading configurati>
12月 08 23:08:00 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:08:00.619Z caller=main.go:902 msg="Completed loading o>
12月 08 23:08:00 dxm22.host prometheus[20927]: level=info ts=2020-12-08T15:08:00.619Z caller=main.go:694 msg="Server is ready to >

Centos8搭建服务监控prometheus+node_export+grafana_第2张图片

Active: active (running) 可以看到prometheus服务已经启动成功。
Centos8搭建服务监控prometheus+node_export+grafana_第3张图片

将prometheus设置为开机自启动

[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus
prometheus.service                         disabled
# disabled表示非开机自启动

# 设置为开机自启动
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl enable prometheus.service
Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /etc/systemd/system/prometheus.service.

# 再次查看
[root@dxm22 prometheus-2.23.0.linux-amd64]# systemctl list-unit-files | grep prometheus
prometheus.service                         enabled

# enabled表示是开机自启动,执行重启命令
[root@dxm22 prometheus-2.23.0.linux-amd64]# reboot

#重启后再次查看prometheus服务已启动完成。

node_exporter的安装和使用

用户和组

#先检查用户node_exporter和组node_exporter是否存在

#检查组是否存在
cat /etc/group | grep node_exporter

#如果不存在,创建组
groupadd node_exporter

#检查用户node_exporter是否存在
cat /etc/passwd | grep node_exporter    
或者  
id node_exporter

#如果不存在,创建用户
useradd -g node_exporter node_exporter

创建目录

# 创建目录并切换
[root@dxm22 ~]# mkdir -p /data/node_exporter
[root@dxm22 ~]# cd /data/node_exporter

下载

[root@dxm22 node_exporter]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

# 下载完查看
[root@dxm22 node_exporter]# ll -h
总用量 9.1M
-rw-r--r-- 1 root root 9.1M 6月  16 21:19 node_exporter-1.0.1.linux-amd64.tar.gz

解压

[root@dxm22 node_exporter]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz
node_exporter-1.0.1.linux-amd64/
node_exporter-1.0.1.linux-amd64/NOTICE
node_exporter-1.0.1.linux-amd64/node_exporter
node_exporter-1.0.1.linux-amd64/LICENSE

将node_exporter下二进制文件拷贝到/usr/local/bin目录下并设置权限

# 拷贝文件
[root@dxm22 node_exporter-1.0.1.linux-amd64]# cp node_exporter /usr/local/bin/
[root@dxm22 node_exporter-1.0.1.linux-amd64]# ll /usr/local/bin/ | grep node
-rwxr-xr-x 1 root root 19657731 12月  8 23:27 node_exporter

# 设置权限
[root@dxm22 node_exporter-1.0.1.linux-amd64]# chown node_exporter.node_exporter /usr/local/bin/node_exporter

# 查看权限设置是否成功
[root@dxm22 node_exporter-1.0.1.linux-amd64]# ll /usr/local/bin/node_exporter
-rwxr-xr-x 1 node_exporter node_exporter 19657731 12月  8 23:27 /usr/local/bin/node_exporter

启动

# 可直接启动(非后台启动),进入node_exporter安装目录
./node_exporter

# 后台启动,在安装目录下:
nohup ./node_exporter &
# 后台启动,在任意目录下:
nohup /usr/local/bin/node_exporter &

我们这里使用后台启动。
[root@dxm22 node_exporter-1.0.1.linux-amd64]# nohup /usr/local/bin/node_exporter &
[1] 21296
[root@dxm22 node_exporter-1.0.1.linux-amd64]# nohup: 忽略输入并把输出追加到'nohup.out'

# 查看是否存在node_exporter进程
[root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter
root       21296  0.0  0.7 717504 13380 pts/0    Sl   23:35   0:00 /usr/local/bin/node_exporter
root       21315  0.0  0.0  12320  1068 pts/0    S+   23:36   0:00 grep --color=auto node_exporter

# 查看9100端口是否被监听
[root@dxm22 node_exporter-1.0.1.linux-amd64]# netstat -ntlp | grep :9100
tcp6       0      0 :::9100                 :::*                    LISTEN      21296/node_exporter

说明启动成功,在浏览器上输入ip + 9100端口可访问。(如果有防火墙,需要设置)
Centos8搭建服务监控prometheus+node_export+grafana_第4张图片

将node_exporter加入systemctl管理

创建node_exporter.service服务文件

[root@dxm22 node_exporter-1.0.1.linux-amd64]# cat /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
PrivateTmp=true
RestartSec=5
StartLimitInterval=0
Restart=always

[Install]
WantedBy=multi-user.target

重新加载服务列表

[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl daemon-reload

启动服务

# 停止上面手动后台启动的node_exporter进程
[root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter
root       21464  0.0  0.8 717760 14884 pts/0    Sl   23:44   0:00 /usr/local/bin/node_exporter
root       21513  0.0  0.0  12320  1112 pts/0    S+   23:45   0:00 grep --color=auto node_exporter
[root@dxm22 node_exporter-1.0.1.linux-amd64]# kill -9 21464

# 检查是否还存在node_exporter进程
[root@dxm22 node_exporter-1.0.1.linux-amd64]# ps aux | grep node_exporter
root       21516  0.0  0.0  12320  1060 pts/0    S+   23:45   0:00 grep --color=auto node_exporter

# 查询所有服务单元是否有node_exporter
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter
node_exporter.service                      disabled

# 存在,且非开启自启动,接着使用systemctl启动node_exporter服务
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl start node_exporter

# 查看node_exporter服务状态
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl status node_exporter.service

Centos8搭建服务监控prometheus+node_export+grafana_第5张图片
Active: active (running) 可以看到node_exporter服务已经启动成功。在浏览器上输入ip + 9100端口可访问。

将node_exporter设置为开机自启动

[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter
node_exporter.service                      disabled
# disabled表示非开机自启动

# 设置为开机自启动
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl enable node_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /etc/systemd/system/node_exporter.service.

# 再次查看
[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl list-unit-files | grep node_exporter
node_exporter.service                      enabled

# enabled表示是开机自启动,执行重启命令
[root@dxm22 node_exporter-1.0.1.linux-amd64]# reboot

#重启后再次查看node_exporter服务已启动完成。

加入prometheus监控

[root@dxm22 node_exporter-1.0.1.linux-amd64]# vim /etc/prometheus/prometheus.yml
# 增加如下内容:
# node_exporter监控 -新增node_exporter相关job
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

Centos8搭建服务监控prometheus+node_export+grafana_第6张图片
重启prometheus

[root@dxm22 node_exporter-1.0.1.linux-amd64]# systemctl restart prometheus.service

再次访问http://192.168.0.22:9090/targets。Centos8搭建服务监控prometheus+node_export+grafana_第7张图片

Grafana的安装使用

用户和组

#先检查用户grafana和组grafana是否存在

#检查组是否存在
cat /etc/group | grep grafana

#如果不存在,创建组
groupadd grafana

#检查用户grafana是否存在
cat /etc/passwd | grep grafana    
或者  
id grafana

#如果不存在,创建用户
useradd -g grafana grafana

创建目录

# 创建目录并切换
[root@dxm22 ~]# mkdir -p /data/grafana
[root@dxm22 ~]# cd /data/grafana

下载

# 去官网下载grafana包,官网地址:https://grafana.com/grafana/download
# 或者 wget https://dl.grafana.com/oss/release/grafana-7.3.4-1.x86_64.rpm
# 或者到华为镜像网站下载wget https://mirrors.huaweicloud.com/grafana/7.3.4/grafana-7.3.4.linux-amd64.tar.gz

# 这里我们去华为镜像下载
[root@dxm22 grafana]# wget https://mirrors.huaweicloud.com/grafana/7.3.4/grafana-7.3.4.linux-amd64.tar.gz

# 下载完查看
[root@dxm22 grafana]# ll -h
总用量 52M
-rw-r--r-- 1 root root 52M 11月 24 14:35 grafana-7.3.4.linux-amd64.tar.gz

解压

[root@dxm22 grafana]# tar -zxvf grafana-7.3.4.linux-amd64.tar.gz

将grafana下二进制文件拷贝到/usr/local/bin目录下并设置权限

# 拷贝文件
[root@dxm22 grafana-7.3.4]# cp /data/grafana/grafana-7.3.4/bin/grafana-server /usr/local/bin/
[root@dxm22 grafana-7.3.4]# ll /usr/local/bin/ | grep grafana
-rwxr-xr-x 1 root          root          58938592 12月  9 11:56 grafana-server

# 设置权限
[root@dxm22 grafana-7.3.4]# chown grafana.grafana /usr/local/bin/grafana-server

# 查看权限设置是否成功
[root@dxm22 grafana-7.3.4]# ll /usr/local/bin/grafana-server
-rwxr-xr-x 1 grafana grafana 58938592 12月  9 11:56 /usr/local/bin/grafana-server

配置grafana

拷贝ini配置文件文件至/etc/grafana配置文件目录下

# 将解压文件下conf文件夹下ini文件均拷贝至/etc/grafana目录下
[root@dxm22 grafana-7.3.4]# cp -r /data/grafana/grafana-7.3.4/conf/ /etc/grafana/
[root@dxm22 grafana-7.3.4]# ll /etc/grafana/
总用量 72
-rw-r--r-- 1 root root 30381 12月  9 12:05 defaults.ini
-rw-r--r-- 1 root root  1045 12月  9 12:05 ldap_multiple.toml
-rw-r--r-- 1 root root  2289 12月  9 12:05 ldap.toml
drwxr-xr-x 6 root root    75 12月  9 12:05 provisioning
-rw-r--r-- 1 root root 31400 12月  9 12:05 sample.ini

创建grafana配置文件所需目录

# 创建用于存放temp files, sessions, and the sqlite3 db等的数据目录
[root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana

# 创建grafana日志文件目录
[root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana/log

# 创建plugins目录
[root@dxm22 grafana-7.3.4]# mkdir /var/lib/grafana/plugins

/etc/grafana配置文件目录下创建custom.ini的配置文件并覆盖conf/defaults.ini中定义的任何设置

# 复制defaults.ini文件并重命名为custom.ini
[root@dxm22 grafana-7.3.4]# cp /etc/grafana/defaults.ini /etc/grafana/custom.ini
[root@dxm22 grafana-7.3.4]# ll /etc/grafana/ | grep ini
-rw-r--r-- 1 root root 30381 12月  9 12:08 custom.ini
-rw-r--r-- 1 root root 30381 12月  9 12:05 defaults.ini
-rw-r--r-- 1 root root 31400 12月  9 12:05 sample.ini

# 修改custom.ini文件内容,主要有以下几项,未列出的默认即可。
data = /var/lib/grafana

logs = /var/lib/grafana/log

plugins = /var/lib/grafana/plugins

provisioning = /etc/grafana/provisioning

启动

# 可直接启动(非后台启动),进入grafana安装目录bin下
./grafana-server

# 后台启动,在安装目录下:
nohup ./grafana-server &
# 后台启动,在任意目录下:
nohup /usr/local/bin/grafana-server &

我们这里使用后台启动。
[root@dxm22 grafana-7.3.4]# nohup /usr/local/bin/grafana-server &
[1] 28811
[root@dxm22 grafana-7.3.4]# nohup: 忽略输入并把输出追加到'nohup.out'

# 查看是否存在grafana进程
[root@dxm22 grafana-7.3.4]# ps aux | grep grafana
root       28811  4.1  2.9 1427932 54568 pts/0   Sl   12:25   0:00 /usr/local/bin/grafana-server
root       28822  0.0  0.0  12320  1076 pts/0    S+   12:25   0:00 grep --color=auto grafana

# 查看3000端口是否被监听
[root@dxm22 grafana-7.3.4]# netstat -ntlp | grep :3000
tcp6       0      0 :::3000                 :::*                    LISTEN      28811/grafana-server

说明启动成功,在浏览器上输入ip + 3000端口可访问,我们这里是http://192.168.0.22:3000/。(如果有防火墙,需要设置),默认的用户名/密码都使用 admin。
Centos8搭建服务监控prometheus+node_export+grafana_第8张图片
我们登录之后再看
Centos8搭建服务监控prometheus+node_export+grafana_第9张图片

配置数据源

左侧菜单->Configuration->Data Sources->点 add data source 按钮
Centos8搭建服务监控prometheus+node_export+grafana_第10张图片
选择prometheus,如图:
Centos8搭建服务监控prometheus+node_export+grafana_第11张图片
设置url,我们这里是http://192.168.0.22:9090,大家注意要修改为自己的IP+端口:
Centos8搭建服务监控prometheus+node_export+grafana_第12张图片
然后点 save & test 按钮,看到 “Data source is working” 表示数据源可以正常工作,如图:
Centos8搭建服务监控prometheus+node_export+grafana_第13张图片

导入dashboard

可在官方模板https://grafana.com/grafana/dashboards,查看模板编号,也可以下载后导入。比如我这里选择import,输入模板编号为8919
Centos8搭建服务监控prometheus+node_export+grafana_第14张图片
Centos8搭建服务监控prometheus+node_export+grafana_第15张图片
Centos8搭建服务监控prometheus+node_export+grafana_第16张图片
Centos8搭建服务监控prometheus+node_export+grafana_第17张图片
Centos8搭建服务监控prometheus+node_export+grafana_第18张图片

将grafana加入systemctl管理

创建grafana-server.service服务文件

[root@dxm22 grafana-7.3.4]# vim /etc/systemd/system/grafana-server.service


[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target
After=postgresql.service mariadb.service mysqld.service

[Service]
User=grafana
Group=grafana
Type=notify
Restart=on-failure
WorkingDirectory=/usr/share/grafana
RuntimeDirectory=grafana
RuntimeDirectoryMode=0750
ExecStart=/usr/local/bin/grafana-server                                                  \
                            --config=/etc/grafana/custom.ini                             \
                            --homepath=/data/grafana/grafana-7.3.4                       \
                            --pidfile=/var/lib/grafana/pid/grafana-server.pid            \
                            cfg:default.paths.logs=/var/lib/grafana/log                  \
                            cfg:default.paths.data=/var/lib/grafana                      \
                            cfg:default.paths.plugins=/var/lib/grafana/plugins           \
                            cfg:default.paths.provisioning=/etc/grafana/provisioning  &

LimitNOFILE=10000
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target

# 目录赋权限
chown -R grafana.grafana /usr/share/grafana
chown -R grafana.grafana /etc/grafana/
chown -R grafana.grafana /var/lib/grafana/

重新加载服务列表

[root@dxm22 grafana-7.3.4]# systemctl daemon-reload

启动服务

# 停止上面手动后台启动的grafana进程
[root@dxm22 grafana-7.3.4]# ps aux | grep grafana
root       28811  0.1  1.8 1649640 33700 pts/0   Sl   12:25   0:03 /usr/local/bin/grafana-server
root       29742  0.0  0.0  12320  1088 pts/0    S+   13:11   0:00 grep --color=auto grafana
[root@dxm22 grafana-7.3.4]# kill -9 28811

# 检查是否还存在grafana进程
[root@dxm22 grafana-7.3.4]# ps aux | grep grafana
root       29748  0.0  0.0  12320   972 pts/0    S+   13:12   0:00 grep --color=auto grafana

# 查询所有服务单元是否有grafana
[root@dxm22 grafana-7.3.4]# systemctl list-unit-files | grep grafana
grafana-server.service                     disabled

# 存在,且非开启自启动,接着使用systemctl启动grafana服务
[root@dxm22 grafana-7.3.4]# systemctl start grafana-server.service

# 查看grafana服务状态
[root@dxm22 grafana-7.3.4]# systemctl status grafana-server.service

Centos8搭建服务监控prometheus+node_export+grafana_第19张图片

Active: active (running) 可以看到grafana服务已经启动成功。在浏览器上输入ip + 3000端口可访问。

将grafana设置为开机自启动

[[root@dxm22 grafana-7.3.4]# systemctl list-unit-files |  grep grafana
grafana-server.service                     disabled
# disabled表示非开机自启动

# 设置为开机自启动
[root@dxm22 grafana-7.3.4]# systemctl enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /etc/systemd/system/grafana-server.service.
# 再次查看
[root@dxm22 grafana-7.3.4]# systemctl list-unit-files |  grep grafana
grafana-server.service                     enabled

# enabled表示是开机自启动,执行重启命令
[root@dxm22 grafana-7.3.4]# reboot

#重启后再次查看grafana服务已启动完成。

至此我们就完成了在centos8服务器上安装prometheus、node_exporter和grafana的监控环境,下一步我们将接入mysqld_exporter加入prometheus来监控。

你可能感兴趣的:(linux,centos,运维)