IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux服务器统一应用服务管理和统一应用日志管理 -> 正文阅读

[系统运维]Linux服务器统一应用服务管理和统一应用日志管理

应用服务

配置方式

在Linux服务器中,应用服务可以通过Linux的“服务管理器”进行统一管理。在应用部署时只需要在/etc/systemd/system/etc/systemd/user目录下编写如下格式的service文本即可将服务交由systemctl管理。

# demo.service
[Unit]
# 服务描述		
Description=演示示例服务

[Service]
# 定义执行的命令
ExecStart=java -jar /opt/*.jar
# 指定执行命令的用户
User=deamon

注意: 建议使用限权的用户(例如:deamon)来启动应用服务以提升系统安全性。

常用命令

使用systemctl命令时需要进行提权,可以使用su命令切换到高权限用户或者使用sudo命令进行提权。

# 启动服务
systemctl start [demo.service]
# 停止服务
systemctl stop [demo.service]
# 重启服务
systemctl restart [demo.service]
# 服务状态
systemctl status [demo.service]
# 开机自启
systemctl enable [demo.service]
# 关闭自启
systemctl disable [demo.service]

补充说明

多数情况下都是通过应用日志来排查应用问题,但是存在极少数的非运行时问题,比如:应用的路径配置不正确。这种问题可以通过systemctl status进行初步问题的排查,更多日志信息可以通过监听/var/log/messages文件来获取。

# eg: 查看服务日志
sudo tail -900f /var/log/messages

应用日志

要求说明

统一应用日志管理几点要求:

  1. 统一输出目录;
  2. 统一日志格式规范(例如:分warn级别和info级别的日志);
  3. 日志自动压缩和自动清理。

统一日志目录和格式规范的话,对于运维人员和开发人员都可以快速的提取和分析日志。(就算应用不是自己部署的情况下,也可以在约定的目录找到服务运行日志)。很多情况下,日志是帮助运维、开发人员分析现有问题的工具,那么历史日志的价值就会很低,因此建议保留15至30天的日志即可。

logback配置示例

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <!--读取SpringBoot中的配置-->
  <!-- 日志输出路径 -->
  <springProperty scope="context" name="logRoot" source="logging.file.path"/>
  <!-- 应用名称,作为日志文件的特征符号 -->
  <springProperty scope="context" name="logModule" source="spring.application.name"/>
  
  <!-- 警告及以上级别的日志 -->
  <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>WARN</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <file>${logRoot}/${logModule}-warn.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logRoot}/${logModule}-warn-%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>360</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} [%file:%line] -%msg %n</pattern>
    </encoder>
  </appender>

  <!-- 所有级别的日志 -->
  <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logRoot}/${logModule}-all.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logRoot}/${logModule}-all-%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>36</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} [%file:%line] -%msg %n</pattern>
    </encoder>
  </appender>

  <!-- 应用配置 -->
  <root level="INFO">
    <appender-ref ref="FILE_WARN"/>
    <appender-ref ref="FILE_ALL"/>
  </root>
</configuration>

Spring Boot配置

logging:
  # 指定配置文件
  config: logback.xml
  file:
    # 指定日志输出目录
    path: /data/logs

nginx配置

# 错误级别的日志输出
error_log  /data/logs  error;

http {
    # 日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    # 访问日志输出,指定输出目录和日志格式
    access_log  /data/logs  main; 
}

日志变量说明:

$remote_addr :记录访问网站的客户端地址
$remote_user :记录远程客户端用户名称
$time_local :记录访问时间与时区
$request :记录用户的 http 请求起始行信息
$status :记录 http 状态码,即请求返回的状态,例如 200404502$body_bytes_sent :记录服务器发送给客户端的响应 body 字节数
$http_referer :记录此次请求是从哪个链接访问过来的,可以根据 referer 进行防盗链设置
$http_user_agent :记录客户端访问信息,如浏览器、手机客户端等
$http_x_forwarded_for :当前端有代理服务器时,设置 Web 节点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了相关的 x_forwarded_for 设置
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:20:33  更:2022-07-20 19:23:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 19:18:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码