安装
Loki、promtail、Grafana Prometheus
二进制包安装
Loki,promtail配置文件下载
wget raw.githubusercontent.com/grafana/lok…
wget raw.githubusercontent.com/grafana/lok…
二进制包下载:
Loki配置文件
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 39095 #grpc监听端口,默认为9095
grpc_server_max_recv_msg_size: 15728640 #grpc最大接收消息值,默认4m
grpc_server_max_send_msg_size: 15728640 #grpc最大发送消息值,默认4m
ingester:
lifecycler:
address: 192.168.66.178 #IP地址
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
max_chunk_age: 20m #一个timeseries块在内存中的最大持续时间。如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块
schema_config:
configs:
- from: 2018-04-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /opt/loki/loki_data/index
filesystem:
directory: /opt/loki/loki_data/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
ingestion_rate_mb: 30 #修改每用户摄入速率限制,即每秒样本量,默认值为4M
ingestion_burst_size_mb: 15 #修改每用户摄入速率限制,即每秒样本量,默认值为6M
chunk_store_config:
max_look_back_period: 168h #回看日志行的最大时间,只适用于即时日志
table_manager:
retention_deletes_enabled: true #日志保留周期开关,默认为false
retention_period: 168h #日志保留周期
promtail配置文件
server:
http_listen_port: 9080
grpc_listen_port: 0
grpc_server_max_recv_msg_size: 15728640
grpc_server_max_send_msg_size: 15728640
positions:
filename: /opt/loki/promtail/positions.yaml
clients:
- url: http://192.168.66.178:3100/loki/api/v1/push
scrape_configs:
- job_name: app_log
static_configs:
- targets:
- localhost
labels:
job: varlogs_178
__path__: /var/log/*log
#__path__: /ceph_root/{dev,test}/apps_data/*/log/*log
创建安装目录,解压程序并移动到指定特定目录
loki:
mkdir -p /opt/loki
mkdir -p /opt/loki/loki_data
mv loki-linux-amd64 loki-local-config.yaml /opt/loki
promtail:
mkdir -p /opt/promtail
mv promtail-linux-amd64 promtail-local-config.yaml /opt/promtail
创建Systemd服务启动loki
useradd -s /sbin/nologin -M loki
chown -R loki:loki /opt/loki/
vim /etc/systemd/system/loki.service
[Unit]
Description=loki
Documentation=https://grafana.com/oss/loki/
After=network.target
[Service]
User=loki
Group=loki
Type=simple
ExecStart=/opt/loki/loki-linux-amd64 --config.file=/opt/loki/loki-local-config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动
systemctl start loki
systemctl status loki
systemctl enable loki
创建Systemd服务启动loki
useradd -s /sbin/nologin -M promtail
chown -R promtail:promtail /opt/promtail/
vim /etc/systemd/system/promtail.service
启动
systemctl start promtail
systemctl status promtail
systemctl enable promtai
Prometheus配置
Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启Prometheus Server。
Prometheus 配置说明:
global:
scrape_interval: 15s # 设置抓取间隔,默认为1分钟
evaluation_interval: 15s #估算规则的默认周期,每15秒计算一次规则。默认1分钟
# scrape_timeout #默认抓取超时,默认为10s
# Alertmanager相关配置
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 规则文件列表,使用'evaluation_interval' 参数去抓取
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 抓取配置列表
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
创建prometheus的用户及数据存储目录
为了安全,使用普通用户来启动prometheus服务。作为一个时序型的数据库产品,prometheus的数据默认会存放在应用所在目录下
useradd -s /sbin/nologin -M prometheus
#创建数据目录
mkdir /export/prometheus/data -p
#修改目录属主
chown -R prometheus:prometheus /opt/prometheus/
创建Systemd服务启动prometheus
prometheus的启动很简单,只需要直接启动解压目录的二进制文件prometheus即可,但是为了更加方便对prometheus进行管理,这里使用systemd来启停prometheus
vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
备注:在service文件里面,我们定义了启动的命令,可以定义数据存储路径,否则默认会在prometheus二进制的目录的data下
systemctl start prometheus
systemctl status prometheus
systemctl enable prometheu
granfana配置
grafana:
useradd -s /sbin/nologin -M grafana
mkdir /opt/grafana/data
chown -R grafana:grafana /opt/grafana/
修改grafana配置文件:
vim /opt/grafana/conf/defaults.ini
修改内容如下:(一般保持默认即可)
data = /opt/grafana/data
logs = /opt/grafana/log
plugins = /opt/grafana/plugins
provisioning = /opt/grafana/conf/provisioning
新增 grafana-server.service 文件,使用systemd来管理grafana服务
vim /etc/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network.target
[Service]
User=grafana
Group=grafana
Type=notify
ExecStart=/opt/grafana/bin/grafana-server -homepath /opt/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target
启停并设置开机启动
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server
打开grafana的web页面
grafana已经安装完毕。默认情况下,grafana-server会启动3000端口,使用浏览器打开grafana页面:http://IP:3000/login,输入默认的账号密码 admin/admin登录,第一次登陆需要修改密码。
添加数据源
grafana虽然已经安装好了,但是这个时候还没有数据,没办法作图。下面我们把grafana和loki 或者和 prometheus关联起来,也就是在grafana中添加添加数据源。
Grafana显示和过滤日志
在配置页面点击添加Data Sources,然后选择loki,输入loki 服务的参数然后点Save & Test即可。
查看过滤日志
左侧菜单栏选择 Explore详细查看方法 ,这位大佬写的很清晰:www.cnblogs.com/turingguo/p…
prometheus添加数据源
在配置页面点击添加Data Sources,然后选择prometheus,输入prometheus服务的参数即可。
使用Node Exporter采集主机运行数据
与传统的监控zabbix来对比的话,prometheus-server就像是mysql,负责存储数据。只不过这是时序数据库而不是关系型的数据库。数据的收集还需要其他的客户端,在prometheus中叫做exporter。针对不同的服务,有各种各样的exporter,就好比zabbix的zabbix-agent一样。这里为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用Node Exporter。Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/获取最新的node exporter版本的二进制包
下载node exporter
wget github.com/prometheus/… -xf node_exporter-0.18.1.linux-amd64.tar.gz#新建一个目录专门安装各种exportermkdir -p /opt/prometheus/exportermv node_exporter-0.18.1.linux-amd64 /opt/prometheus/exporter/cd /opt/prometheus/exporter/mv node_exporter-0.18.1.linux-amd64 node_exporter
加入linux服务,启动node exporter
直接打开node_exporter的可执行文件即可启动 node export,默认会启动9100端口。建议使用systemctl来启动
vim /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Restart=on-failure
ExecStart=/opt/prometheus/exporter/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
加入开机启动
systemctl enable node_exporter
systemctl start node_exporte
配置Prometheus,收集node exporter的数据
可以看到node exporter启动后也就是暴露了9100端口,并没有把数据传到prometheus,我们还需要在prometheus中配置,让prometheus去pull这个接口的数据。
编辑prometheus.yml文件,增加后面4行.
然后重启prometheus,打开prometheus页面查看是不是有对应的数据了。
scrape_configs:
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
#采集node exporter监控数据
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
在prometheus的web界面看到这个节点是up的状态了,接下来我们在grafana中添加对应的模板。
导入grafana模板,数据展示
在导入界面,我们输入模板的编号,这里我使用的是9276号模板,如要使用其他的模板,请到grafana的官网去查找 grafana.com/dashboards
选择数据源,然后点击导入
详情看大佬这篇
https://www.cnblogs.com/shawhe/p/11833368.html