이 문서는에 출시된 Jira Service Management 10.4.x Release Note 릴리즈 노트를 공유하기 위해 작성되었다.
하이라이트
호환 가능한 어플리케이션
복잡한 권한으로 인한 속도 저하 개선
ADMIN
시간이 지남에 따라 데이터가 쌓이고 복잡한 권한으로 인해 속도가 느려질 수 있습니다.
API를 사용하여 권한 검사를 줄이고 필요한 것을 더 쉽게 찾고 성능을 향상시켜 워크플로를 간소화할 수 있습니다.
- 삭제할 조직 검색 : GET
https://{baseURL}/rest/servicedeskapi/organization/cleanup
- 지정된 조직 삭제 : DELETE
https://{baseURL}/rest/servicedeskapi/organization/cleanup
비활성 사용자가 있는 조직을 삭제하고 이러한 엔드포인트에서 분리된 조직을 삭제할 수도 있습니다.
자동화 대기열 지원 개선
ADMIN
자동화 대기열이 커지면 규칙 실행이 지연되거나 실행되지 않을 수 있습니다. 자동화 대기열의 모니터링 기능을 향상시키기 위해 새로운 알림, 메트릭 및 진단 REST 엔드포인트를 도입합니다.
- 이제 자동화 대기열에 있는 처리되지 않고 청구되지 않은 메시지가 구성 가능한 임계값(기본값은 1시간)을 초과하면 진단 페이지 에 알림이 표시됩니다.
- 대기열에 있는 가장 오래된 처리되지 않고 클레임되지 않은 메시지의 기간을 반영하는
새로운 계측 및 JMX 메트릭(automation.queue.earliest.unprocessed.message.age.secs.max_stale_10mins
)을 볼 수 있습니다. - 새로운 API 엔드포인트를 사용하면 대기열 증가에 기여하는 이벤트와 규칙을 분석할 수 있습니다.
- 이벤트 유형별로 자동화 대기열의 내용을 검색하고 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/automation-queue/by-event-type
입니다. - 규칙별로 자동화 대기열의 내용을 검색하고 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/automation-queue/by-rule
입니다. - 지정된 기간 동안의 감사 로그를 분석하고 이벤트 소스별로 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/audit/by-event-source
입니다.
암호화 키를 로테이션
ADMIN
Jira는 이미 기본 비밀 암호화를 통해 일반 텍스트 비밀을 자동으로 암호화합니다. 이제 암호화 키 로테이션을 통해 시스템을 더욱 보호할 수 있습니다.
API 호출을 사용하여 새 키로 기존 비밀을 다시 암호화하고 비활성 키를 관리합니다. 이 추가 보안은 단일 노드 및 클러스터 환경 모두에서 사용할 수 있습니다.
이슈 링크 유형의 순서를 커스텀
ADMIN
이제 관리자는 이슈 링크 유형의 순서를 사용자 정의할 수 있습니다. 두 가지 정렬 방법을 도입했습니다.
- 드래그 앤 드롭: 이슈 링크 유형 표에서 직접 순서를 재정렬
- 알파벳순 정렬: 드롭다운 메뉴를 사용해 오름차순이나 내림차순으로 정렬
Jira Stats 로깅 위치 변경
ADMIN
Jira 10.4.0 부터 Jira Stats가 atlassian-jira.log
대신 atlassian-jira-stats.log
에 기록됩니다. 이는 log4j2.xml
속성에 의해 구성됩니다.
Splunk, Grafana, Logstash, Kibana 또는 Jira Stats 에 의존하는 다른 도구는 새 파일 위치에 맞게 조정 해야 합니다.
log4j2.xml
구성 파일이 재정의된 경우 수동으로 조정합니다.
<JiraHomeAppender name="jirastatslog" fileName="atlassian-jira-stats.log" filePattern="atlassian-jira-stats.log.%i"> <PatternLayout alwaysWriteExceptions="false"> <Pattern>${StackTraceFilteringPattern}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="20480 KB"/> </Policies> <DefaultRolloverStrategy fileIndex="min" max="10"/> </JiraHomeAppender> (...) <!-- #####################################################--> <!-- # Jira Stats logging--> <!-- #####################################################--> <!-- # on INFO logs queue stats per node, on DEBUG logs queue stats per queue--> <Logger name="com.atlassian.jira.cluster.distribution.localq.LocalQCacheManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.cluster.dbr.DBRSenderStats$TotalAndSnapshotDBRSenderStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.cluster.dbr.DBRReceiverStats$TotalAndSnapshotDBRReceiverStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.WriterWithStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.versioning.EntityVersioningManagerWithStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.issue.index.IndexingStatsManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.MonitoringIndexWriter" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.ReIndexStatsLogger" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.ReplicationStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.plugin.PluginTransactionListener" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.propertyset.TotalAndSnapshotPropertyEntryStoreStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.TotalAndSnapshotIndexRepairStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.QueueingIndexStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <!-- # Cluster Authentication stats--> <Logger name="com.atlassian.jira.cluster.distribution.localq.rmi.auth.ClusterAuthStatsManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.stats.TotalAndSnapshotIndexSearcherStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.util.stats.JiraStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger>
새 사용자 정의 JiraStat를 추가하고 JiraStats.create(…)를 사용하지 않는 경우 다음과 같이 이 클래스의 사용자 정의 로거도 추가해야 합니다.
<Logger name="logger_name_usually_a_package_and_classname" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger>
새로운 검색 API 출시
ADMIN
Atlassian은 검색 툴링에 대한 보다 독립적인 옵션의 기반을 마련하고 있으며, 추상화 계층을 추가하는 것으로 시작합니다.
이 변경 사항은 향후 OpenSearch 지원을 가능하게 하는 데 중요합니다. 새로운 추상화 계층은 새로운 검색 API를 도입합니다.
검색 및 인덱싱 성능은 기존 Lucene 구현과 일관되게 유지됩니다. 이 변경 사항은 또한 공개 API에서 Lucene을 제거하려는 계획의 시작을 알립니다.