使用systemd启动服务

在实际运维工作中,我们经常会使用nohup与&结合来启动后台服务,也可能会使用到screen来启动后台服务,但在centos7后系统提供了systemd来管理后台服务。

之前我们是这样子来启动后台服务的:

nohup ./massminer --config conf/chia.json m2 > /dev/null 2>&1 &

看起来比较土一点,但是能解决实际运维问题。这里有几个麻烦的点,你需要重启服务时,必须跟kill命令一起结合指定目标pid才能完成。

使用systemd我们可以这样来定义后台服务,如下:

cat >/lib/systemd/system/massminer.service<<EOF
[Unit]
Description=Mass Miner
Documentation=https://www.massexplorer.org/
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/mass/massminer
ExecStart=/home/mass/massminer/massminer --config /home/mass/massminer/config.json m2 &
KillMode=process
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

自定义后台服务后,希望systemctl马上能识别,可以通过如下命令进行重载:
systemctl daemon-reload
启动服务:
systemctl start massminer
关闭服务:
systemctl stop massminer
查看服务:
systemctl status massminer
使用systemd来管理后台服务后更加简洁方便。

node_exporter自定义监控项

在日常运维工作中,我们时常跟监控打交道,近些年监控平台从Zabbix往Prometheus转,这里跟容器业务应用得越来越多有比较大的关系。

node_exporter提供了很多基础的监控指标,如:CPU、内存、磁盘、网卡等;可实际工作中业务是多种多样的,总免不了定制一些自定义的监控指标,那如何在node_export中添加自定义监控项呢?

操作步骤:

1、自定义任务生成Prometheus可以识别的*.prom文件,格式为 key:value

root@Worker-10-12-213-205:~# cat /opt/apps/prometheus/scripts/mminer_process.sh
#!/bin/bash
curdate=$(date +%Y%m%d)
num=$(ps -ef |grep massminer |grep -v grep|wc -l)
num_w=$(ps -ef |grep masswallet |grep -v grep|wc -l)
poc_block=$(grep "block submitted via PoC miner accepted" /home/mass/massminer/logs/mass-${curdate}*.log | wc -l)
miner_count=$(grep -E '"find qualities for next block, waiting for proper slot" binding_count=([1-9]+)' /home/mass/massminer/logs/mass-${curdate}*.log | wc -l)
massminer_localbaseheight=$(/home/mass/massminer/massminercli --log_level error getclientstatus | jq ".localBestHeight" | bc -l)
massminer_knownbaseheight=$(/home/mass/massminer/massminercli --log_level error getclientstatus | jq ".knownBestHeight" | bc -l)
echo "masswallet_process ${num_w}" >> ${prom}
echo "#HELP poc_block read from /opt/apps/proetheus/node-exporter/mminer.prom" >> ${prom}
echo "#TYPE poc_block untyped" >> ${prom}
echo "poc_block ${poc_block}" >> ${prom}
echo "#HELP miner_count read from /opt/apps/proetheus/node-exporter/mminer.prom" >> ${prom}
echo "#TYPE miner_count untyped" >> ${prom}
echo "miner_count ${miner_count}" >> ${prom}
echo "#HELP massminer_localbaseheight read from /opt/apps/proetheus/node-exporter/mminer.prom" >> ${prom}
echo "#TYPE massminer_localbaseheight untyped" >> ${prom}
echo "massminer_localbaseheight ${massminer_localbaseheight}" >> ${prom}
echo "#HELP massminer_knownbaseheight read from /opt/apps/proetheus/node-exporter/mminer.prom" >> ${prom}
echo "#TYPE massminer_knownbaseheight untyped" >> ${prom}
echo "massminer_knownbaseheight ${massminer_knownbaseheight}" >> ${prom}
exit 0

2、定期执行自定义任务,如:crontab或程序自定义

root@Worker-10-12-213-205:~# crontab -l
*/1 * * * * /opt/apps/prometheus/scripts/mminer_process.sh

3、启动node_exporter时,通过–collector.textfile.directory指定*.prom所在目录

/opt/apps/prometheus/bin/node_exporter --web.listen-address=10.12.214.65:9100 --collector.textfile.directory=/opt/apps/prometheus/node-exporter/

正常完成这个步骤后,可以通过node_exporter的9100端口,就能查看已收集的指标。

做时间的朋友

时间是最无私的,最公平的;

不论你是否富有还是贫穷;

不论你是聪明还是愚昧;

不论你是珍惜还是浪费;

时间给每个人每天都是一样多,每天24小时共86400秒,一分不多一秒不少,隔天清零后重来,周而复始。

我们如何跟时间做朋友呢?怎么样更高效利用时间呢?一连串的问题复现在大脑中,好似风中的柳絮一样,不知该飘到哪个地方,乱后便烦很可能还影响了身边的人,这可能就是大家所说的:焦虑感

有时候停下来反思一段时间收获时,总会发现自己可能又浪费了一堆的时间在各种瞎忙活上,比如:发呆、酗酒、瞎聊、刷短视频、看网文等;在信息爆炸时代里,要是目标不明确,加上执行力不强的话,很容易迷失自己。(制定目标是做任何事情的关键

是否发现之前事情原来是不紧急。可对自己要求不严各种拖延后,发现都变成了紧急的,搞得自己各种烦躁,各种抱怨事情怎么就这么多?(执行力:制定工作计划并严格要求自己

有时候你想认真将某件事情完成时,可各种意外事件来打断原本的计划,如:临时会议、临时业务对接、疯狂的营销电话等;需要专注完成事情时,将手机静音放在一边,暂时关闭各种即时通讯工具,将所有的注意力放在待完成目标上。(强制专注屏蔽一切可能的打断

做好时间的朋友,适当焦虑感是必须的;

古人言:凡事预则立,不预则废;制定合理目标是完成任务的前提,强大执行力是完成目标的必要保障,减少各种干扰让我们聚焦目标的完成。