当前位置: 首页> 汽车> 行情 > 【运维】linux使用systemd手动部署与管理服务进程,以webhook回调告警为例(附常用linux进程/端口状况查看命令)

【运维】linux使用systemd手动部署与管理服务进程,以webhook回调告警为例(附常用linux进程/端口状况查看命令)

时间:2025/7/12 23:43:46来源:https://blog.csdn.net/qq_33957603/article/details/141439504 浏览次数: 0次

【运维】linux使用systemd手动部署与管理服务进程,以webhook回调告警为例(附常用linux进程/端口状况查看命令)

文章目录

    • 1、systemd服务部署
    • 2、webhook回调告警服务
    • 3、常用linux进程/端口状况查看命令

1、systemd服务部署

1、服务配置文件,创建服务

  • 创建服务:sudo nano /etc/systemd/system/test1.service

  • [Unit] 部分:

    • Description: 对服务的简要描述。
    • After: 指定服务启动的顺序,这里表示在 network.target 之后启动该服务。
  • [Service] 部分:

    • ExecStart: 指定运行服务的命令。在这个例子中,它是一个 Python 脚本。
    • Restart: 定义何时重启服务,这里设置为在服务失败时重启。
    • UserGroup: 指定服务运行的用户和组。
  • [Install] 部分:

    • WantedBy: 定义服务安装时,链接到的目标/运行级别,这里表示多用户模式。
[Unit]
Description=test1
After=network.target[Service]
ExecStart=/home/test1 -f /home/etc/test1-api.yaml
Restart=always
User=nobody
Group=nogroup[Install]
WantedBy=multi-user.target

2、常用服务命令

  • 查看服务状态
systemctl status <服务名>
systemctl status nginx
  • 启动服务(常用)
systemctl start <服务名>
systemctl start nginx
  • 停止服务
systemctl stop <服务名>
systemctl stop nginx
  • 重启服务(重载配置), (常用)
systemctl restart <服务名>
systemctl restart nginx
  • 重新加载服务配置
systemctl reload <服务名>
systemctl reload nginx
  • 启用服务(开机启动, 常用)
systemctl enable <服务名>
systemctl enable nginx
  • 禁用服务(取消开机启动)
systemctl disable <服务名>
systemctl disable nginx
  • 检查服务是否开机启动
systemctl is-enabled <服务名>
systemctl is-enabled nginx
  • 查看所有服务的状态
systemctl list-units --type=service
  • 获取服务日志
journalctl -u <服务名>
journalctl -u nginx
  • 重新加载 systemd 管理的服务配置文件
systemctl daemon-reload

3、服务宕机感知

  1. 设置 Restart 选项
    在服务的 unit 文件中可以配置 Restart 选项,以便在服务失败或停止时自动重新启动服务。常见的选项有 alwayson-failure 等。

    [Service]
    ExecStart=/usr/bin/your-service
    Restart=always# 可选的,设置重启之前的延时
    RestartSec=10
    
  2. 配置报警和通知

    • 系统日志监控:Systemd 会将服务状态的变更记录在系统日志中,可以结合 ELK(Elasticsearch, Logstash, Kibana)、Prometheus + Grafana、Zabbix 等监控系统进行报警通知。

    • 自定义脚本:在服务的 unit 文件中,使用 ExecStartPreExecStartPost 调用自定义脚本来发送通知。例如:

      [Service]
      ExecStart=/usr/bin/your-service
      Restart=always
      ExecStartPost=/path/to/your-notification-script.sh
      
  3. Watchdog
    使用 Systemd 的 Watchdog 功能来监控服务。如果服务未能在规定时间内回应,systemd 将会执行相应的处理。

    在 unit 文件中配置如下:

    [Service]
    ExecStart=/usr/bin/your-service
    Restart=on-failure
    WatchdogSec=30s
    

2、webhook回调告警服务

回调接口介绍:

  • 接口回调是一种设计模式,使得程序可以在某些事件发生或条件满足时,主动调用一些预定的函数或方法。
  • 接口回调的用法非常广泛,以下是一些常见的接口回调用法:
    事件监听:例如在用户界面中,当用户点击按钮、滑动滚动条等事件发生时,可以通过回调方法处理这些事件。
    异步处理:例如在网络请求、文件读写等异步操作中,可以使用回调方法处理结果,不阻塞主线程。
    自定义行为:例如在排序、遍历等操作中,可以通过回调方法自定义操作的行为。
  • UI交互:在用户界面交互中,通过接口回调处理用户事件,如点击、滑动、输入等。
    网络请求:在网络请求中,通过接口回调处理请求的结果,如成功、失败、超时等。
    多线程编程:在多线程编程中,通过接口回调处理线程的状态,如开始、结束、进度等。
    数据库操作:在数据库操作中,通过接口回调处理查询、更新、删除等操作的结果。
  • 1, 2

webhook介绍,与api的区别:

  • Webhook 是一种基于 HTTP 的回调函数,可在 2 个应用编程接口(API)之间实现事件驱动的轻量级通信。
  • 要设置 Webhook,客户端需向服务器 API 提供唯一的 URL,并指定其要了解的事件。设置 Webhook 后,客户端不再需要轮询服务器。发生特定的事件时,服务器会自动将相关的有效负载发送到客户端的 Webhook URL。
  • Webhook 通常被称为“反向 API” 或“推送 API”,因为通信责任落在了服务器而非客户端上。与客户端不断发送 HTTP 请求来请求数据,直至服务器作出响应的方式不同,服务器在数据可用时会立即向客户端发送一个 HTTP POST 请求。虽然有这些别名,但其实 Webhook 并非 API,二者可以结合使用。应用必须具有 API 才能使用 Webhook。
  • 1, 2, 3

这里以告警bot为例

  • 1、实现一个中转proxy转发的服务进程
  • 2、提供回调接口给到云平台(按照平台定义的接口规范),这样平台触发告警后会调用这个接口
  • 3、接口收到消息后,转推送消息到webhook订阅号(企微,钉钉等等)

3、常用linux进程/端口状况查看命令

参考资料:1 , linux基础命令总结整理

Linux 常用命令

进程:
sudo su
bash install.sh
stress --cpu 1 --timeout 60 # 压力测试
ps aux | grep 'test1'
pidof test.py
lsof +D /home网络: 
ip -4 a
ifconfig | grep br0硬盘: 
free -h

查找进程

  • 如果知道进程名称或命令行的一部分,你可以使用 psgrep 结合来查找。例如: ps aux | grep '[t]est.py'
    这里的 aux 参数列出所有进程,包括其他用户的进程。用 [t]est.py 而不是 test.py 来避免 grep 自己显示在结果中。

  • 如果你知道进程启动的确切可执行文件,可以用 pidof test.py

  • lsof 是另一个强大的工具,可以列出打开的文件和相关进程。比如要找出在 home 目录下打开的文件相关的进程:

    lsof +D /home/yourusername
    

    这将列出所有打开 /home/yourusername 下文件的进程。

  • 可以使用交互式工具如 tophtop 来显示系统中的所有进程,然后通过筛选找到特定的进程:

    top -u $(whoami)
    

    top 中你可以按 / 然后输入关键字来搜索进程名。

  • pidstatsysstat 包中的一个工具,可以用来监控特定 PID 的资源使用情况。如果你知道进程特征,可以过滤:

    pidstat -u -p ALL | grep 'test.py'
    

端口占用情况

  • netstat 是一个用于显示网络连接、路由表、接口统计数据、伪装连接和多播成员的命令。

    netstat -tuln | grep LISTEN
    
    • -t: 显示TCP端口
    • -u: 显示UDP端口
    • -l: 显示监听状态的端口
    • -n: 以数字格式显示地址和端口
    • -p: 显示使用端口的进程PID和名称
  • ss 提供了类似 netstat 的功能,但速度更快,信息更详细。
    查看所有监听的端口: ss -tuln
    同样地,你也可以使用 -p 参数来显示每个端口相关的进程 : sudo ss -tulnp

  • lsof 是一个列出打开的文件的工具,其中也包括网络文件。
    查看指定端口的占用情况,例如端口8080:

    sudo lsof -i :8080
    

    查看所有监听的端口:

    sudo lsof -i -P -n | grep LISTEN
    
    • -P: 强制使用端口号而非服务名
    • -n: 强制使用数字格式的IP地址而非主机名
  • 使用 nmap
    nmap 是一个网络扫描工具,通常用于扫描开放的端口,但也可以用来查看本地系统的端口状态。
    安装 nmap:

    sudo apt-get install nmap  # Debian/Ubuntu系
    sudo yum install nmap      # CentOS/Fedora系
    

    扫描本地开放的端口:

    sudo nmap -sT -O localhost
    
关键字:【运维】linux使用systemd手动部署与管理服务进程,以webhook回调告警为例(附常用linux进程/端口状况查看命令)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: