Commit adba5546 authored by yuwen.yin's avatar yuwen.yin

添加 weadmin3.2.0发布说明及工单说明

parent caa0f7d4
...@@ -7,10 +7,8 @@ type: "download-info" ...@@ -7,10 +7,8 @@ type: "download-info"
#### <center>百度云下载:</center> #### <center>百度云下载:</center>
|版本 |操作系统 |操作系统版本 |架构 |下载| |版本 |操作系统 |操作系统版本 |架构 |下载|
| ---- | ---- | ---- | ---- | ----| | ---- | ---- | ---- | ---- | ----|
|ITOSS **V3.1.2**_绿色版| windows linux|所有 |X86_64| [点击下载](https://pan.baidu.com/s/1_e4VsUD5VLvqn9cLSEmQzQ?pwd=eiyh ), 提取码:eiyh| |ITOSS **V3.2.0**_绿色版| windows linux|所有 |X86_64| [点击下载](https://pan.baidu.com/s/1hK4jzv3OEyZ6i0QXgrP4qg?pwd=site), 提取码:site|
|ITOSS **V3.1.1**_绿色版|windows linux|所有|X86_64|[点击下载](https://pan.baidu.com/s/1EcgR5dvvRagsT_mfPg-VKQ), 提取码:icce|
|ITOSS **V3.1.0**_绿色版|windows linux|所有|X86_64|[点击下载](https://pan.baidu.com/s/1Z_JmDgvAbDXinND8D1puDA ), 提取码:l60t|
请一定选择**最新**版本下载,可以[点击打开版本发布说明](http://download.weadmin.com/Weadmin3_ReleaseNote.txt),也可以使用[脚本自动升级](/FAQ/sl/faq24) 请一定选择**最新**版本下载,可以[点击打开版本发布说明](http://download.weadmin.com/Weadmin3_ReleaseNote.txt),也可以使用[脚本自动升级](/FAQ/sl/faq24)
......
---
title: "变更经理角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'biangeng'
order: 5
card: true
---
变更经理角色: 审批资产变更与创建任务
1. 查询变更请求列表
1. 变更角色账号(<font color='red'>biangeng/manage</font>)登录平台,查看需要评估的变更请求。
![](images/itsm/biangeng-list.png)
2. 处理变更
1. 双击一个变更请求。查看变更详情,填写变更的原因,级别,风险等。修改状态:已接受。
![](images/itsm/biangeng-edit.png)
3. 创建一个新任务,分配工程师去具体执行磁盘扩充。
![](images/itsm/biangeng-create.png)
4. 检查分配的任务状态变成已解决。
5. 修改变更状态:已完成,并保存。
6. 创建发布
1. 将服务器变更的信息进行发布。
\ No newline at end of file
---
title: "发布经理角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'fabu'
order: 7
card: true
---
发布经理角色:创建里程碑
1. 查看发布列表
发布经理角色账号(<font color='red'>fabu/manage</font>),登录平台,查看活动的发布记录。
![](images/itsm/fabu-list.png)
2. 创建里程碑
双击发布看到发布的详细信息,选择里程碑进行新建。
![](images/itsm/fabu-create.png)
3. 填写并保存里程碑。
4. 关闭发布
修改发布的状态为: 已关闭,并保存。
![](images/itsm/fabu-save.png)
\ No newline at end of file
---
title: "服务台分析员角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'fuwu'
order: 2
card: true
---
服务台分析员角色: 分配工单
1. 查询所有记录的工单。
服务台分析员账号(<font color='red'>fuwu/manage</font>) 登录平台,在所有记录的事件中,看到一个新提交的工单。
![](images/itsm/fuwu-list.png)
2. 分配故障工单。
双击打开工单记录,根据故障现象 ,填写相关数据并将工单转给具体的工程师。
将故障工单分配给 赵一线,之后保存。
![](images/itsm/fuwu-edit.png)
3. 查看 所有解决 工单,发现工单状态变成:已解决。
4. 分析员可以帮忙关闭事件,或者等自助服务客户自己关闭。
\ No newline at end of file
---
title: "工程师角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'line'
order: 3
card: true
---
工程师角色: 处理工单
1. 查询分配给自己的工单。
1. 工程师角色账号(<font color='red'>line1/manage</font>)登录平台,看到我的活动事件中被分配的故障工单。
![](images/itsm/line-list.png)
2. 处理工单
1. 双击一个工单,查看工单详情,根据详情处理具体的工单。
![](images/itsm/line-edit.png)
3. 根据处理的方式,可以分3个走向:
1. 创建新的事件
1. 程序进程挂断启动不了,需要转其他部门软件运维工程师。
2. 创建新的问题
1. 描述故障的详细: (例如: 服务器磁盘满了,需要扩容。)
2. 进行临时措施。(例如:清理部分日志文件)
3. 保存问题。
![](images/itsm/line-save.png)
3. 处理完成,填写解决办法。
1. 在解决中,直接描述解决的办法。(例如:程序进程挂断,重新启动恢复正常。)
4. 保存故障工单。
工程师角色: 处理任务
1. 登录平台,查看任务列表
![](images/itsm/line-task-list.png)
2. 处理任务。
填写解决情况。
![](images/itsm/line-task-edit.png)
3. 保存任务,状态自动变成已解决。
![](images/itsm/line-task-save.png)
\ No newline at end of file
---
title: "配置经理角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'peizhi'
order: 6
card: true
---
配置经理角色: 变更资产
1. 查询到需要变更的资产信息
1. 使用配置经理账号(<font color='red'>peizi/manage</font>)登录平台,查看变更的需求列表
2. 查看变更需求,变更状态 和对应人员 将需要扩充的磁盘给与工程师。
1. 根据变更需求,出库对应硬件交付给对应的工程师
3. 查看发布的里程碑状态为:已完成。
4. 修改服务器配置的磁盘配置
1. 当变更的状态变成已完成,就修改对应服务器的磁盘配置。
\ No newline at end of file
---
title: "自助服务角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'self'
order: 1
card: true
---
自助服务角色: 创建故障工单
1. 创建故障工单
使用自助服务客户账号(<font color='red'>self/manage</font>)登录平台,创建故障工单。
2. 填写工单信息
在事件页面中,将类型选择故障,并描述故障现象,之后保存。(创建一个故障工单)
![img](images/itsm/self.png)
3. 关闭工单
检查发现工单状态变成已完成,验证故障是否存在,不复现之后关闭故障。
\ No newline at end of file
---
title: "问题经理角色"
topTitle: "运维工单流程"
type: "itsm"
id: 'wenti'
order: 4
card: true
---
问题经理角色: 分配问题工单
1. 查看问题工单列表
1. 使用问题经理角色(<font color='red'>wenti/manage</font>)登录平台,查询活动问题记录列表。
![img](images/itsm/wenti-list.png)
2. 处理问题
1. 双击一个问题,查看问题详情,根据工单说明,错误信息等形成多个处理问题的方向。
3. 根据处理方式:
1. 直接处理:
1. 选择 根本原因/解决
2. 填写分析的具体原因,和解决办法。
2. 新建任务让工程师处理。
1. 选择任务,创建新任务
2. 任务类型:
指定团队(例如: 清理更多的空间任务)
指定供应商(例如: 磁盘坏道,找供应商上门维修。)
3. 新建变更资产,进行扩容
1. 选择变更,创建新变更
2. 填写变更相关资料,并保存变更。
![img](images/itsm/wenti-save.png)
4. 保存问题。
\ No newline at end of file
import React from "react"
import { Link } from 'gatsby'
import Card from "./card"
import { vP } from "./gutters"
import presets, { colors } from "../utils/presets"
import { rhythm, scale, options } from "../utils/typography"
// import Button from "./button";
import { StaticQuery, graphql } from "gatsby"
const ItsmCards = ({
location = {},
overrideTitleCSS = {},
overrideCardCSS = {}
}) => (
<>
<StaticQuery
query={pageItsmQuery}
render={data => {
const { edges: posts } = data.allMarkdownRemark
return (
<>
{posts
.map(({ node: post }) => {
return (
<Card key={post.id} className="fadeCard2 fade-hidden animated" isLink={true} location={location} overrideCSS={{
"&:hover .card-icon": {
background: post.frontmatter.hoverIcon ? `url(${post.frontmatter.hoverIcon.publicURL}) no-repeat` : '',
backgroundSize: '30px 30px',
},
"&:hover a": {
color: "#fff",
}
}}>
<Link css={styles.link} to={"/product/ecc-it/itsm/" + post.frontmatter.link}>
{ post.frontmatter.icon ? <div className="card-icon" css={{
height: 24,
marginBottom: 15,
background: `url(${post.frontmatter.icon.publicURL}) no-repeat`,
backgroundSize: '24px 24px',
[presets.Tablet]: {
marginBottom: 25,
height: 30,
backgroundSize: '30px 30px',
}
}}>
</div> : null }
<div className="card-info">
<h2 css={{...styles.cardHeadLine, ...overrideTitleCSS}}>
{post.frontmatter.title}
</h2>
{/* <Button small secondary overrideCSS={{marginBottom: `.6rem`, fontSize: '14px!important'}} to={post.frontmatter.link}>详情</Button> */}
<div css={{...styles.futuraParagraph, ...overrideCardCSS}} dangerouslySetInnerHTML={{ __html: post.html }}></div>
</div>
</Link>
</Card>
)
})
}
</>
)
}}
/>
</>
)
const styles = {
cardHeadLine: {
...scale(2 / 5),
// lineHeight: 1.2,
marginTop: 0,
marginBottom: 15,
// [presets.Tablet]: {
// fontSize: scale(1 / 10).fontSize,
// },
// [presets.Desktop]: {
// fontSize: scale(3 / 10).fontSize,
// },
// [presets.VHd]: {
// fontSize: scale(5 / 10).fontSize,
// },
// [presets.VVHd]: {
// fontSize: scale(7 / 10).fontSize,
// },
},
Description: {
margin: `0 auto ${rhythm(2)}`,
maxWidth: rhythm(30),
},
futuraParagraph: {
fontFamily: options.headerFontFamily.join(`,`),
fontSize: 16,
marginBottom: 0,
},
section: {
borderRadius: presets.radiusLg,
borderTop: `1px solid ${colors.ui.light}`,
borderTopLeftRadius: 0,
borderTopRightRadius: 0,
flex: `1 1 100%`,
fontFamily: options.headerFontFamily.join(`,`),
marginTop: rhythm(1),
padding: vP,
textAlign: `left`,
[presets.Tablet]: {
marginTop: 0,
},
},
title: {
...scale(2 / 5),
lineHeight: 1.2,
marginTop: 0,
textAlign: `center`,
[presets.Tablet]: {
fontSize: scale(1 / 10).fontSize,
},
[presets.Desktop]: {
fontSize: scale(3 / 10).fontSize,
},
[presets.VHd]: {
fontSize: scale(5 / 10).fontSize,
},
[presets.VVHd]: {
fontSize: scale(7 / 10).fontSize,
},
},
link: {
display: 'block',
color:' rgba(0, 0, 0, 0.88)',
transition: 'color 0s',
}
}
export default ItsmCards
const pageItsmQuery = graphql`
query ItsmQuery {
allMarkdownRemark(
sort: {fields: [frontmatter___order], order:ASC }
filter: { frontmatter: { type: { eq: "itsm" } } }
) {
edges {
node {
excerpt
id
html
frontmatter {
title
type
link
icon {
publicURL
}
}
}
}
}
}
`
...@@ -110,6 +110,11 @@ ...@@ -110,6 +110,11 @@
link: /FAQ/dc/faq1/ link: /FAQ/dc/faq1/
- title: FAQ 2:Linux系统安装Docker操作说明-作用远程连接功能 - title: FAQ 2:Linux系统安装Docker操作说明-作用远程连接功能
link: /FAQ/dc/faq2/ link: /FAQ/dc/faq2/
- title: WeADMIN版本升级
link: /FAQ/weadmin/faq1
items:
- title: weadmin升级到3.2.0
link: /FAQ/weadmin/faq1/
...@@ -4,52 +4,68 @@ ...@@ -4,52 +4,68 @@
link: /product/ link: /product/
- title: weadmin3新功能 - title: weadmin3新功能
link: /product/itoss3/ link: /product/itoss3/
- title: WeADMIN基础设施监控系统
link: /product/ecc-it/#summary
- title: 监控系统功能点介绍
link: /product/ecc-it/#function
items:
- title: 简单易用、操作简便
link: /product/ecc-it/function-easy/
- title: 非代理模式监测服务器
link: /product/ecc-it/function-proxy/
- title: 企业级高效监测
link: /product/ecc-it/function-monitor/
- title: 炫酷仪表盘
link: /product/ecc-it/function-history/
- title: 立体拓扑
link: /product/ecc-it/function-topo/
- title: 运营状态可视化
link: /product/ecc-it/function-visual/
- title: 微信小程序
link: /product/ecc-it/function-weixin/
- title: 多终端方式告警
link: /product/ecc-it/function-alarm/
- title: 丰富多样报表
link: /product/ecc-it/function-report/
- title: 操作审计
link: /product/ecc-it/function-audit/
- title: 平台自检
link: /product/ecc-it/function-check/
- title: 数据备份与恢复
link: /product/ecc-it/function-data/
- title: 多组织、多角色、多用户管理
link: /product/ecc-it/function-users/
- title: 监测器介绍
link: /product/ecc-it/#monitor
items: items:
- title: WeADMIN基础设施监控系统
link: /product/ecc-it/#summary
- title: 监控系统功能点介绍
link: /product/ecc-it/#function
items:
- title: 简单易用、操作简便
link: /product/ecc-it/function-easy/
- title: 非代理模式监测服务器
link: /product/ecc-it/function-proxy/
- title: 企业级高效监测
link: /product/ecc-it/function-monitor/
- title: 炫酷仪表盘
link: /product/ecc-it/function-history/
- title: 立体拓扑
link: /product/ecc-it/function-topo/
- title: 运营状态可视化
link: /product/ecc-it/function-visual/
- title: 微信小程序
link: /product/ecc-it/function-weixin/
- title: 多终端方式告警
link: /product/ecc-it/function-alarm/
- title: 丰富多样报表
link: /product/ecc-it/function-report/
- title: 操作审计
link: /product/ecc-it/function-audit/
- title: 平台自检
link: /product/ecc-it/function-check/
- title: 数据备份与恢复
link: /product/ecc-it/function-data/
- title: 多组织、多角色、多用户管理
link: /product/ecc-it/function-users/
- title: 监测器介绍 - title: 监测器介绍
link: /product/ecc-it/#monitor link: /product/ecc-it/monitor-info/#
items: - title: 监测器界面介绍
- title: 监测器介绍 link: /product/ecc-it/monitor-info/#interface
link: /product/ecc-it/monitor-info/# - title: 对网络设备支持
- title: 监测器界面介绍 link: /product/ecc-it/monitor-info/#network
link: /product/ecc-it/monitor-info/#interface - title: 对服务器支持
- title: 对网络设备支持 link: /product/ecc-it/monitor-info/#server
link: /product/ecc-it/monitor-info/#network - title: 对业务系统支持
- title: 对服务器支持 link: /product/ecc-it/monitor-info/#business
link: /product/ecc-it/monitor-info/#server - title: 运维工单流程
- title: 对业务系统支持 link: /product/ecc-it/itsm/#self
link: /product/ecc-it/monitor-info/#business items:
- title: 系统截图 - title: 自助服务角色
link: /product/ecc-it/#screenShot link: /product/ecc-it/itsm/#self
- title: 安装需求 - title: 服务台分析员角色
link: /product/ecc-it/#demand link: /product/ecc-it/itsm/#fuwu
- title: 工程师角色
link: /product/ecc-it/itsm/#line
- title: 问题经理角色
link: /product/ecc-it/itsm/#wenti
- title: 变更经理角色
link: /product/ecc-it/itsm/#biangeng
- title: 配置经理角色
link: /product/ecc-it/itsm/#peizhi
- title: 发布经理角色
link: /product/ecc-it/itsm/#fabu
- title: 系统截图
link: /product/ecc-it/#screenShot
- title: 安装需求
link: /product/ecc-it/#demand
---
title: WeADMIN升级到3.2.0版本
type: tutorial
---
### Windows绿色版升级步骤
*****************
1. 打开windows服务列表,停止ITOSS服务并删除
2. 打开windows服务列表,停止ElasticSearch7.5.0的服务并删除
3. 打开任务管理器,停止mysqld.exe 进程。
4. 下载 **ITOSS V3.2.0_绿色版本** [点击我,进行下载](https://pan.baidu.com/s/1hK4jzv3OEyZ6i0QXgrP4qg?pwd=site) ,并解压(<font color=red>注意:解压的目录不要有中文和空格</font>)
5. 启动start.bat,会自动重新安装itoss服务与ElasticSearch7.17.5服务
6. 如果需要保留基本监控数据,可以将程序下的mysql-mxj 删除,从老版本中将 该文件复制过来,之后在重启
7. 如果需要保留Elasticsearch日志,修改elasticsearch-7.17.5\config\elasticsearch.yml文件:
![img](../../../images/update/esyml.png)
8. 停止掉start.bat
9. 使用服务方式启动程序,打开服务列表,启动ITOSS服务。
10. 浏览器输入: http://localhost:8080 进入页面。
### Linux绿色版升级步骤
*****************
1. 停止ITOSS服务
进入到程序目录,
停止ITOSS服务,执行 :
```
./service.sh stop
```
卸载ITOSS服务,执行:
```
./service.sh uninstall
```
2. 停止Elasticsearch7.5.0
执行: jps 看到有Elasticsearch kill掉对应的进程
3. 停止掉mysql进程
执行: `ps -ef | grep mysql` ,kill掉mysql进程
4. 下载**ITOSS V3.2.0_绿色版本** [点击我,进行下载](https://pan.baidu.com/s/1hK4jzv3OEyZ6i0QXgrP4qg?pwd=site),并解压(<font color=red>注意:解压的目录不要有中文和空格</font>)
5. 启动start.sh,会自动重新安装itoss服务
6. 如果需要保留基本监控数据:
1. 停止现在运行的mysql
2. 删除mysql-mxj 或者修改别名为mysql-mgj_bak,从老版本中将mysql-mxj 文件复制过来
3. 启动 start.bat 注意: 这个过程可能会很慢因为升级的数据比较多请耐心等待
4. 等启动完成 查询updateDbSql目录下,是否有文件,如果有就是升级冲突的脚本 根据错误提示修改下脚本 重新启动start.bat进行重新导入 或者手动导入脚本
7. 如果需要保留Elasticsearch日志,修改elasticsearch-7.17.5\config\elasticsearch.yml文件:
![img](../../../images/update/esyml.png)
8. 关闭掉stat.sh,重新安装ITOSS服务,执行: `./service.sh install`
9. 使用守护进程启动程序: `./service.sh start` 或者 `service ITOSS start`
10. 浏览器输入: http://localhost:8080 进入页面。
### 脚本自动升级步骤
*****************
1. 停止ITOSS、Elastisearch、mysql 进程
2. 启动update.sh 或者update.bat
3. 等待自动更新完成会自动重新启动
4. 其他和linux与windows的升级步骤一致
...@@ -15,6 +15,7 @@ import Cards from "../../components/cards"; ...@@ -15,6 +15,7 @@ import Cards from "../../components/cards";
import MonitorCards from "../../components/monitorCards"; import MonitorCards from "../../components/monitorCards";
import Container from "../../components/container"; import Container from "../../components/container";
import { graphql } from "gatsby" import { graphql } from "gatsby"
import ItsmCards from "../../components/itsmCards";
const EccItPage = (props) => { const EccItPage = (props) => {
// console.log(props); // console.log(props);
...@@ -118,6 +119,14 @@ const EccItPage = (props) => { ...@@ -118,6 +119,14 @@ const EccItPage = (props) => {
</div> </div>
</div> </div>
</div> </div>
{/* <div id="itsm" className="anchor-point">
<div css={styles.contact}>
<h3 css={styles.summaryTitle}>运维工单流程</h3>
<div css={styles.cards} style={{ boxShadow: '0 1px 0 0 #f5f3f7'}}>
<ItsmCards overrideTitleCSS={{fontSize: '1rem'}} overrideCardCSS={{fontSize: 14}} />
</div>
</div>
</div> */}
{/* <div css={styles.footer}> {/* <div css={styles.footer}>
<Footer /> <Footer />
</div> */} </div> */}
......
import React from "react"
import SEO from "../../../components/seo"
// import Button from "../../components/button"
import Footer from "../../../components/footer"
import Layout from "../../../components/layout"
// import { vP } from "../../components/gutters"
import Container from "../../../components/container"
import presets, { colors } from "../../../utils/presets"
import { itemListProd } from "../../../utils/sidebar/item-list"
import typography, { rhythm, scale } from "../../../utils/typography"
// import pic1 from "../../images/technologyhighlights/s-technology.jpg"
// import pic2 from "../../images/technologyhighlights/change2017031601.jpg"
import { graphql } from "gatsby"
const itsmPage = (props) => {
const { edges } = props.data.allMarkdownRemark
const _header = edges.find(({node: item}) => item.frontmatter.topTitle)
return (
<Layout location={props.location} itemList={itemListProd} contentTitle={_header.node.frontmatter.topTitle}>
<SEO title="简易流程" />
<Container overrideCSS={{padding: 24}}>
{edges
.map(({ node: card }) => {
return (
<div key={card.id} id={card.frontmatter.id} className="anchor-point">
<h4 css={styles.summaryTitle}>{card.frontmatter.title}</h4>
<div dangerouslySetInnerHTML={{ __html: card.html }}></div>
</div>
)
})
}
</Container>
</Layout>
)
}
const styles = {
contentHeader: {
alignItems: `center`,
background: `rgba(255,255,255,0.98)`,
borderBottom: `1px solid ${colors.ui.light}`,
display: `flex`,
flexDirection: `row`,
height: presets.headerHeight,
paddingLeft: `${rhythm(3 / 4)}`,
paddingRight: `${rhythm(3 / 4)}`,
zIndex: 1,
},
contentTitle: {
...scale(1),
color: colors.skyDark,
lineHeight: 1,
margin: 0,
},
footer: {
background: `dimGray`,
fontFamily: typography.options.headerFontFamily.join(`,`),
paddingTop: 0,
paddingBottom: 0,
},
sticky: {
position: `sticky`,
top: `calc(${presets.bannerHeight} - 1px)`,
[presets.Desktop]: {
top: `calc(${presets.headerHeight} + ${presets.bannerHeight} - 1px)`,
},
},
summaryTitle: {
margin: `0 0 10px 0`,
padding: '0 15px 15px 0',
alignItems: `center`,
borderBottom: `1px solid ${colors.ui.border}`,
display: `flex`,
flexDirection: `row`,
zIndex: 1,
},
}
export default itsmPage
export const pageQuery = graphql`
query itsmQuery {
allMarkdownRemark(
sort: {fields: [frontmatter___order], order:ASC }
filter: { frontmatter: { type: { eq: "itsm" } } }
) {
edges {
node {
id
html
frontmatter {
id
title
topTitle
}
}
}
}
}
`
...@@ -2,7 +2,7 @@ import AboutSidebar from "../../data/sidebars/about-links.yaml" ...@@ -2,7 +2,7 @@ import AboutSidebar from "../../data/sidebars/about-links.yaml"
import DocsSidebar from "../../data/sidebars/document-links.yaml" import DocsSidebar from "../../data/sidebars/document-links.yaml"
import StarterSidebar from "../../data/sidebars/starter-links.yaml" import StarterSidebar from "../../data/sidebars/starter-links.yaml"
import ProductSidebar from "../../data/sidebars/product-links.yaml" import ProductSidebar from "../../data/sidebars/product-links.yaml"
import DownloadSidebar from "../../data/sidebars/Download-links.yaml" import DownloadSidebar from "../../data/sidebars/download-links.yaml"
import JCGLSidebar from "../../data/sidebars/ecc/ecc-jcgl-links.yaml" import JCGLSidebar from "../../data/sidebars/ecc/ecc-jcgl-links.yaml"
import GZGJSidebar from "../../data/sidebars/ecc/ecc-gzgj-links.yaml" import GZGJSidebar from "../../data/sidebars/ecc/ecc-gzgj-links.yaml"
import LSQXSidebar from "../../data/sidebars/ecc/ecc-lsqx-links.yaml" import LSQXSidebar from "../../data/sidebars/ecc/ecc-lsqx-links.yaml"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment